package com.example.lib_common.base

import android.app.Application
import cn.jiguang.api.utils.JCollectionAuth
import cn.jpush.android.api.JPushInterface
import com.alibaba.android.arouter.launcher.ARouter
import com.amap.api.maps.MapsInitializer
import com.example.lib_common.flow_eventbus.EventBusInitializer
import com.example.lib_common.utils.AppHolder
import com.tencent.mmkv.MMKV
import me.jessyan.autosize.AutoSize

open class BaseApplication : Application() {
    companion object {
        lateinit var instance: BaseApplication
    }

    override fun onCreate() {
        super.onCreate()
        instance = this

        initMMKV()
        initARouter()

      initAppHolder()
        initJPush()//极光推送
        initEventBus()

        initAMap()

        AutoSize.initCompatMultiProcess(this) // 适配多进程

    }

    private fun initAMap() {
        MapsInitializer.updatePrivacyShow(this,true,true);
        MapsInitializer.updatePrivacyAgree(this,true);
    }

    private fun initEventBus() {
        EventBusInitializer.init(this)
    }
    private fun initJPush() {
        JCollectionAuth.setAuth(this,true)
        JPushInterface.setDebugMode(true)//BuildConfig.Debug
        JPushInterface.init(this)
    }
    private fun initAppHolder() {
        AppHolder.initialize(this)
    }

    fun initMMKV() {
        MMKV.initialize(this)
    }

    fun initARouter() {
        ARouter.openLog()//打印日志
        ARouter.openDebug()//开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        ARouter.init(this)//尽可能早，推荐在application中初始化
    }
}